package main

import (
	"fmt"
	"reflect"
)

/*
反射介绍
	Go程序在运行期使用reflect包访问程序的反射信息。Go程序的反射系统无法获取到一个可执行文件空间中或者是一个包中的所有类型信息，
	需要配合使用标准库中对应的词法、语法解析器和抽象语法树（AST）对源码进行扫描后获得这些信息。
*/
func main() {

	/*
		一. 反射的类型对象（reflect.Type）
			在Go程序中，使用reflect.TypeOf()函数可以获得任意值的类型对象（reflect.Type），程序通过类型对象可以访问任意值的类型信息
	*/
	var a int
	of := reflect.TypeOf(a)
	fmt.Println(of)
	fmt.Println("变量的类型名为: ", of.Name())
	fmt.Println("种类为：", of.Kind())

	// TODO 其他信息有需要自行查阅
}
